package br.com.sisat.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;



public class DataUtil {

	private static String DD_MM_YYYY = "dd/MM/yyyy";

	public static Date parseStringToDate(String data) throws ParseException{
		SimpleDateFormat format = new SimpleDateFormat(DD_MM_YYYY);
		format.setLenient(false);
		return format.parse(data);
	}

	public static Date parseStringToDate(String data, String pattern) throws ParseException{
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.parse(data);
	}

	public static String parseDateToString(Date data){
		SimpleDateFormat format = new SimpleDateFormat(DD_MM_YYYY);
		return format.format(data);
	}

	public static String parseDateToString(Date data, String pattern){
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.format(data);
	}
	
	/**
	 * Pega a data Data Atual em java.sql.Date
	 * @param data
	 * @return Date SQL
	 */
	public static Date getPegaDataAtual() {
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		try {
			return  strTodate( sdf.format(new Date() ));
		} catch (Exception e) {
			return new Date(new Date().getTime());
		}
	}


/**
	 * Pega o ano de uma data
	 * @param data
	 * @return
	 */
	public static int getYear(Date data) {
		Calendar c = Calendar.getInstance();

		c.setTime(data);

		return c.get(Calendar.YEAR);
	}
	/**
	 * Pega o mes de uma data
	 * @param data
	 * @return
	 */
	public static int getMonth(Date data) {
		Calendar c = Calendar.getInstance();

		c.setTime(data);

		return c.get(Calendar.MONTH) + 1;
	}
	/**
	 * Pega o dia de uma data
	 * @param data
	 * @return
	 */
	public static int getDay(Date data) {
		Calendar c = Calendar.getInstance();

		c.setTime(data);

		return c.get(Calendar.DAY_OF_MONTH);
	}
	
	public static final Date strTodate(String data) throws Exception {
		if (data == null || data.length() == 0)
			return null;
		try {
			SimpleDateFormat date = null;
			if (data.indexOf("-") > -1) {
				date = new SimpleDateFormat("yyyy-MM-dddd");
			} else if (data.length() == 10)
				date = new SimpleDateFormat("dd/MM/yyyy");
			else
				date = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
			if (data.equals("") || data.length() == 0) {
				return null;
			} else {
				return date.parse(data);
			}
		} catch (Exception e) {
			throw new Exception( e );
		}
	}
	
	
	public static String yyyyMMaaaaHHmmSS(Date data){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		return sdf.format(data);
	}
	
	
}
